<?php

include_once ('../genericos/translate.php');
include_once ('sqlinjection.php');
if (isset($_GET['vista'])) {
    $accion = $_GET['vista'];
}

$objControl = new controlesCalendario();
switch ($accion) {
    case "1": $objControl->controlDias();
        break;
    case "2": $objControl->controlSemanas();
        break;
    case "3": $objControl->controlMes();
        break;
    case "4": $objControl->controlDiasCandidatos();
        break;
}

class controlesCalendario {

    /**
     * Devuelve el mes proximo de una fecha dada.
     * @param type $anho
     * @param type $mes
     * @param type $dia
     * @return MesProximo 
     */
    function mesProximo($anho, $mes, $dia) {
        $mesProximo;
        $mesProximo = date('Y-m-d', strtotime('+1 month', mktime(0, 0, 0, $mes, $dia, $anho)));
        return $mesProximo;
    }

    /**
     * Devuelve el mes anterior de una fecha dada.
     * @param type $anho
     * @param type $mes
     * @param type $dia
     * @return MesAnterior 
     */
    function mesAnterior($anho, $mes, $dia) {
        $mesAnterior;
        $mesAnterior = date('Y-m-d', strtotime('-1 month', mktime(0, 0, 0, $mes, $dia, $anho)));
        return $mesAnterior;
    }

    /**
     * Devuelve la fecha del dia de ayer segun una fecha dada.
     * @param integer $anho
     * @param integer $mes
     * @param integer $dia
     * @return Fecha_Ayer.
     */
    function dameAyer($anho, $mes, $dia) {
        $ayer;
        $ayer = date('Y-m-d', strtotime('-1 day', mktime(0, 0, 0, $mes, $dia, $anho)));
        return $ayer;
    }

    /**
     * Devuelve la fecha del dia de mañana segun una fecha dada.
     * @param integer $anho
     * @param integer $mes
     * @param integer $dia
     * @return Fecha_Mañana.
     */
    function dameManana($anho, $mes, $dia) {
        $manana;
        $manana = date('Y-m-d', strtotime('+1 day', mktime(0, 0, 0, $mes, $dia, $anho)));
        return $manana;
    }

    /**
     * Retorna el numero de dia de la semana.
     * @param type $anho
     * @param type $mes
     * @param type $dia
     * @return Integer 
     */
    function numeroDia($anho, $mes, $dia) {
        $numeroDia = date('N', mktime(0, 0, 0, $mes, $dia, $anho));
        return $numeroDia;
    }

    /**
     * Devuelve la fecha del lunes de la vista semanal.
     * @param type $dia
     * @param type $mes
     * @param type $anho
     * @return LunesAnterior.
     */
    function fechaUltimoLunes($anho, $mes, $dia) {
        $fechaUltimoLunes = date('Y-m-d', strtotime('last Monday', mktime(0, 0, 0, $mes, $dia, $anho)));
        return $fechaUltimoLunes;
    }

    /**
     * Devuelve el proximo domingo.
     * @param type $dia
     * @param type $mes
     * @param type $anho
     * @return ProximoLunes 
     */
    function fechaProximoLunes($anho, $mes, $dia) {
        $mesProximoDomingo = date('Y-m-d', strtotime('next Monday', mktime(0, 0, 0, $mes, $dia, $anho)));
        return $mesProximoDomingo;
    }

    /**
     * Devuelve la fecha del lunes anterior según un día dado.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return FechaUltimoLunes.
     */
    function ultimoLunes($day, $month, $year) {
        $ultimoLunes = date('N', mktime(0, 0, 0, $month, $day, $year));
        if ($ultimoLunes !== "1") {
            $ultimoLunes = date('Y-m-d', strtotime('last Monday', mktime(0, 0, 0, $month, $day, $year)));
        } else {
            $ultimoLunes = $year . '-' . $month . '-' . $day;
        }
        return $ultimoLunes;
    }

    /**
     * Devuelve la fecha del próximo domingo según un día dado.
     * @param type $day
     * @param type $month
     * @param type $year
     * @return FechaProximoDomingo.
     */
    function proximoDomingo($day, $month, $year) {
        $proximoDomingo = date('N', mktime(0, 0, 0, $month, $day, $year));
        if ($proximoDomingo !== "7") {
            $proximoDomingo = date('Y-m-d', strtotime('Next Sunday', mktime(0, 0, 0, $month, $day, $year)));
        } else {
            $proximoDomingo = $year . '-' . $month . '-' . $day;
        }
        return $proximoDomingo;
    }

    /**
     * Crea los controles para ir 1 dia atras o 1 dia adelante en el calendario de citas.
     */
    function controlDias() {
        $diasSemana = array();
        $meses = array();
        $diasSemana[1] = _("lunes");
        $diasSemana[] = _("martes");
        $diasSemana[] = _("miercoles");
        $diasSemana[] = _("jueves");
        $diasSemana[] = _("viernes");
        $diasSemana[] = _("sabado");
        $diasSemana[] = _("domingo");
        $meses[1] = _("enero");
        $meses[] = _("febrero");
        $meses[] = _("marzo");
        $meses[] = _("abril");
        $meses[] = _("mayo");
        $meses[] = _("junio");
        $meses[] = _("julio");
        $meses[] = _("agosto");
        $meses[] = _("septiembre");
        $meses[] = _("octubre");
        $meses[] = _("noviembre");
        $meses[] = _("diciembre");
        if (isset($_GET['dia'])) {
            $diaActual = $_GET['dia'];
        } else {
            $diaActual = date('d');
        }
        if (isset($_GET['mes'])) {
            $mesActual = $_GET['mes'];
        } else {
            $mesActual = date('m');
        }
        if (isset($_GET['anho'])) {
            $anoActual = $_GET['anho'];
        } else {
            $anoActual = date('Y');
        }
        if ((int) $mesActual < 10 && strlen($mesActual) == 2) {
            $mesActual = substr($mesActual, 1, 1);
        }
        $ayer = $this->dameAyer($anoActual, $mesActual, $diaActual);
        $manana = $this->dameManana($anoActual, $mesActual, $diaActual);
        $numeroDia = $this->numeroDia($anoActual, $mesActual, $diaActual);
        $fecha = '<div class="btnAtras" id="' . $ayer . '" onclick="ponerFecha(this.id,1)"></div><div class="btnAdelante" id="' . $manana . '" onclick="ponerFecha(this.id,1)"></div><div class="fechaControl">' . $diasSemana[$numeroDia] . ' ' . $diaActual . ', ' . $meses[$mesActual] . ' - ' . $anoActual . '</div>';
        echo $fecha;
    }

    function controlDiasCandidatos() {
        $diasSemana = array();
        $meses = array();
        $diasSemana[1] = _("lunes");
        $diasSemana[] = _("martes");
        $diasSemana[] = _("miercoles");
        $diasSemana[] = _("jueves");
        $diasSemana[] = _("viernes");
        $diasSemana[] = _("sabado");
        $diasSemana[] = _("domingo");
        $meses[1] = _("enero");
        $meses[] = _("febrero");
        $meses[] = _("marzo");
        $meses[] = _("abril");
        $meses[] = _("mayo");
        $meses[] = _("junio");
        $meses[] = _("julio");
        $meses[] = _("agosto");
        $meses[] = _("septiembre");
        $meses[] = _("octubre");
        $meses[] = _("noviembre");
        $meses[] = _("diciembre");
        $diaActual = $_GET['dia'];
        $mesActual = $_GET['mes'];
        $anoActual = $_GET['anho'];
        if ((int) $mesActual < 10 && strlen($mesActual) == 2) {
            $mesActual = substr($mesActual, 1, 1);
        }
        $ayer = $this->dameAyer($anoActual, $mesActual, $diaActual);
        $manana = $this->dameManana($anoActual, $mesActual, $diaActual);
        $numeroDia = $this->numeroDia($anoActual, $mesActual, $diaActual);
        $fecha = '<div class="btnAtrasCand" id="' . $ayer . '" onclick="ponerFechaCandidato(this.id)"></div><div class="btnAdelanteCand" id="' . $manana . '" onclick="ponerFechaCandidato(this.id)"></div>';
        echo $fecha;
    }

    /**
     * Crea los controles para ir 1 semana atras o 1 semana adelante en el calendario de citas.
     */
    function controlSemanas() {
        $diasSemana = array();
        $meses = array();
        $diasSemana[1] = _("lunes");
        $diasSemana[] = _("martes");
        $diasSemana[] = _("miercoles");
        $diasSemana[] = _("jueves");
        $diasSemana[] = _("viernes");
        $diasSemana[] = _("sabado");
        $diasSemana[] = _("domingo");
        $meses[1] = _("enero");
        $meses[] = _("febrero");
        $meses[] = _("marzo");
        $meses[] = _("abril");
        $meses[] = _("mayo");
        $meses[] = _("junio");
        $meses[] = _("julio");
        $meses[] = _("agosto");
        $meses[] = _("septiembre");
        $meses[] = _("octubre");
        $meses[] = _("noviembre");
        $meses[] = _("diciembre");
        if (isset($_GET['dia'])) {
            $diaActual = $_GET['dia'];
        } else {
            $diaActual = date('d');
        }
        if (isset($_GET['mes'])) {
            $mesActual = $_GET['mes'];
        } else {
            $mesActual = date('m');
        }
        if (isset($_GET['anho'])) {
            $anoActual = $_GET['anho'];
        } else {
            $anoActual = date('Y');
        }
        if (strlen($mesActual) == 1) {
            $mesActual = "0" . $mesActual;
        }
        $lunesAnterior = $this->ultimoLunes($diaActual, $mesActual, $anoActual);
        $domingoProximo = $this->proximoDomingo($diaActual, $mesActual, $anoActual);
        $lunesSemanaAnterior = $this->fechaUltimoLunes($anoActual, substr($lunesAnterior, 5, 2), substr($lunesAnterior, 8, 2));
        $lunesSemanaProxima = $this->fechaProximoLunes(substr($domingoProximo, 0, 4), substr($domingoProximo, 5, 2), substr($domingoProximo, 8, 2));
        $numeroDia = $this->numeroDia($anoActual, $mesActual, $diaActual);
        $mesLunes = substr($lunesAnterior, 5, 2);
        if ((int) $mesLunes < 10) {
            $mesLunes = substr($mesLunes, 1, 1);
        }
        $mesDomingo = substr($domingoProximo, 5, 2);
        if ((int) $mesDomingo < 10) {
            $mesDomingo = substr($mesDomingo, 1, 1);
        }
        $imprimeRango = substr($lunesAnterior, 8, 2) . " " . substr($meses[$mesLunes], 0, 3) . " " . substr($lunesAnterior, 0, 4) . " - " . substr($domingoProximo, 8, 2) . " " . substr($meses[$mesDomingo], 0, 3) . " " . substr($domingoProximo, 0, 4);

        $fecha = '<div class="btnAtras" id="' . $lunesSemanaAnterior . '" onclick="ponerFecha(this.id,2)" title="' . $lunesSemanaAnterior . '"></div><div class="btnAdelante" id="' . $lunesSemanaProxima . '" onclick="ponerFecha(this.id,2)" title="' . $lunesSemanaProxima . '"></div><div class="fechaControl">' . $imprimeRango . '</div>';
        echo $fecha;
    }

    /**
     * Crea los controles para ir 1 mes atras o 1 mes adelante en el calendario de citas.
     */
    function controlMes() {
        $meses = array();
        $meses[1] = _("enero");
        $meses[] = _("febrero");
        $meses[] = _("marzo");
        $meses[] = _("abril");
        $meses[] = _("mayo");
        $meses[] = _("junio");
        $meses[] = _("julio");
        $meses[] = _("agosto");
        $meses[] = _("septiembre");
        $meses[] = _("octubre");
        $meses[] = _("noviembre");
        $meses[] = _("diciembre");
        if (isset($_GET['dia'])) {
            $diaActual = $_GET['dia'];
        } else {
            $diaActual = date('d');
        }
        if (isset($_GET['mes'])) {
            $mesActual = $_GET['mes'];
        } else {
            $mesActual = date('m');
        }
        if (isset($_GET['anho'])) {
            $anoActual = $_GET['anho'];
        } else {
            $anoActual = date('Y');
        }
        $mesAnterior = $this->mesAnterior($anoActual, $mesActual, $diaActual);
        $numeroMesAnterior = substr($mesAnterior, 5, 2);
        if ((int) $numeroMesAnterior < 10) {
            $numeroMesAnterior = substr($numeroMesAnterior, 1, 1);
        }
        $mesAnterior = substr($mesAnterior, 0, 4) . '-' . substr($mesAnterior, 5, 2) . "-01";
        $mesProximo = $this->mesProximo($anoActual, $mesActual, $diaActual);
        $numeroMesProximo = substr($mesProximo, 0, 2);
        if ((int) $numeroMesAnterior < 10) {
            $numeroMesProximo = substr($numeroMesProximo, 1, 1);
        }
        if (strlen($mesActual) == 2 && (int) $mesActual  < 10 ) {
            $mesActual = substr($mesActual, 1, 1);
        }
        $mesProximo = substr($mesProximo, 0, 4) . '-' . substr($mesProximo, 5, 2) . "-01";
        $hoy = date('d') . "-" . date('m') . "-" . date('Y');
        $fecha = '<div class="btnAtras" id="' . $mesAnterior . '" onclick="ponerFecha(this.id,3)"></div><div class="btnAdelante" id="' . $mesProximo . '" onclick="ponerFecha(this.id,3)"></div><div class="fechaControl">' . $meses[$mesActual] . ' ' . $anoActual . '</div>';
        echo $fecha;
    }

}

?>
